package com.kgc.onlineLife.mapper;


import com.kgc.onlineLife.bean.Customer;
import com.kgc.onlineLife.bean.Product;
import com.kgc.onlineLife.util.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CustomerMapper {

    /**
    * @author: HarryXzy
    * @date: 2022/4/14 8:38 下午
    * @return:
    * @description: 根据用户名和密码查找顾客
    **/
    Customer getCustomerByNameAndPwd(@Param("name") String name, @Param("password") String password);


    /**
    * @author: HarryXzy
    * @date: 2022/4/14 9:45 下午
    * @return:
    * @description: 保存Customer
    **/
    void insertCustomer(Customer customer);

    /**
     * @author : nainai
     * @date   : 2022/4/14
     * @param  : []
     * @return : java.util.List<com.kgc.orderMeal.bean.Customer>
     * @description : 查询所有用户详情，带分页
     */
    List<Customer> selectCustomers(Page page);

    /**
     * @author : nainai
     * @date   : 2022/4/17
     * @param  : [java.lang.String]
     * @return : java.util.List<com.kgc.onlineLife.bean.Customer>
     * @description : 根据用户名，模糊查询，带分页
     */
    List<Customer> selectCustomersByName(@Param("name") String name);

    /**
     * @author : nainai
     * @date   : 2022/4/15
     * @param  : [java.lang.Integer]
     * @return : int
     * @description : 根据id删除用户
     */
    int deleteCustomerById(@Param("id") Integer id);

    /**
     * @author : nainai
     * @date   : 2022/4/15
     * @param  : [java.lang.Integer]
     * @return : com.kgc.onlineLife.bean.Customer
     * @description : 根据id，查询用户详情
     */
    Customer selectCustomerById(@Param("id") Integer id);

    /**
     * @author : nainai
     * @date   : 2022/4/18
     * @param  : [com.kgc.onlineLife.bean.Customer]
     * @return : int
     * @description : 根据id，修改用户信息
     */
    int updateCustomerById(Customer customer);

    List<Product> selectProductCollection(Integer cid);

    Integer getTotalCollection(Integer cid);

    Integer insertCollection(@Param("pid") Integer pid,@Param("cid") Integer cid);

    Integer insertFootPrint(@Param("cid") Integer cid,@Param("pid") Integer pid);

    Integer getTotalFootPrint(Integer cid);

    List<Product> selectProductFootPrint(Integer cid);

    int updateCustomerStatus(@Param("id") Integer id, @Param("status") Integer status);

    List<Integer> selectCollectionId(@Param("cid") Integer cid,@Param("pid") Integer pid);

    Integer deleteCollection(@Param("ids") List<Integer> ids);
}